#pragma once
#include <iostream>
#include <vector>
#include <list>
#include <stdbool.h>
#include <assert.h>
#include <deque>
using namespace std;

namespace wanghao
{
    template<class T,class Container = deque<T>>
    class stcak
    {
    public:
        //不用提供默认构造,因为内置类型会调用它的默认构造
        void push(const T& val)
        {
            _con.push_back(val);
        }
        void pop()
        {
            assert(!empty());
            _con.pop_back();
        }
        bool empty() const
        {
            return _con.empty();
        }
        const T& top() const
        {
            return _con.back();
        }
        const size_t& size() const
        {
            return _con.size();
        }
    private:
        Container _con;
    };
}